package com.zxgj.datadirect.job;

import com.zxgj.datadirect.service.DataDirectOuterApplyService;
import com.zxgj.datadirect.service.DataDirectOrgService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 数据同步定时任务
 * 
 * @author ruoyi
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class DataSyncJob {

    private final DataDirectOuterApplyService outerApplyService;
    private final DataDirectOrgService orgService;

    /**
     * 同步外来申请数据（每小时执行一次）
     */
    @Scheduled(cron = "0 0 * * * ?")
    public void syncOuterApplyData() {
        log.info("开始执行外来申请数据同步任务");
        try {
            int syncCount = outerApplyService.syncFromNationalPlatform();
            log.info("外来申请数据同步完成，同步数量: {}", syncCount);
        } catch (Exception e) {
            log.error("外来申请数据同步失败: {}", e.getMessage(), e);
        }
    }

    /**
     * 同步机构数据（每天凌晨2点执行）
     */
    @Scheduled(cron = "0 0 2 * * ?")
    public void syncOrgData() {
        log.info("开始执行机构数据同步任务");
        try {
            int syncCount = orgService.syncFromNationalPlatform();
            log.info("机构数据同步完成，同步数量: {}", syncCount);
        } catch (Exception e) {
            log.error("机构数据同步失败: {}", e.getMessage(), e);
        }
    }

    /**
     * 清理过期数据（每天凌晨3点执行）
     */
    @Scheduled(cron = "0 0 3 * * ?")
    public void cleanExpiredData() {
        log.info("开始执行过期数据清理任务");
        try {
            // 这里可以添加清理过期数据的逻辑
            // 比如清理过期的申请记录、日志等
            log.info("过期数据清理完成");
        } catch (Exception e) {
            log.error("过期数据清理失败: {}", e.getMessage(), e);
        }
    }
}
